package com.xiyun.f1t100;

import java.util.Arrays;
import java.util.HashMap;

/*
    1. 两数之和
    给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target  的那 两个 整数，并返回它们的数组下标。

    你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。
 */
public class TwoSum_1 {
    class Solution {
        public int[] twoSum(int[] nums, int target) {
            HashMap<Integer,Integer> hashMap = new HashMap<>();
            hashMap.put(nums[0],0);
            for (int i = 1;i < nums.length; i++){
                if (hashMap.containsKey(target - nums[i])){
                    return new int[]{i,hashMap.get(target - nums[i])};
                }
                hashMap.put(nums[i],i);
            }
            return null;
        }
    }
    public static void resolve(String[] args) {
        int[] arr = {2,3,4,7,9};
        int aim = 9;
        Solution solution = new TwoSum_1().new Solution();
        System.out.println(Arrays.toString(solution.twoSum(arr, aim)));
    }
}
/*
    执行用时：1 ms, 在所有 Java 提交中击败了99.43%的用户
    内存消耗：41.2 MB, 在所有 Java 提交中击败了47.27%的用户
    通过测试用例：57 / 57
 */

